Handheld computing device with external notification system

ABSTRACT

A portable handheld computing device has a notification system that alerts a user of an event regardless of whether the device is on or off. The notification system has a notification mechanism that is activated upon occurrence of the event and remains active until the user acknowledges the activated mechanism. In one implementation, the notification mechanism is a light emitting diode (LED) mounted externally on the handheld computing device. The LED is visible to the user when the lid is closed onto the base (i.e., the device is off) or when the lid is open (i.e., the device is on). The notification mechanism also has a deactivation button mounted externally of the handheld computing device. The user depresses the deactivation button to deactivate the LED. The LED and deactivation button may be integrated as a single component.

TECHNICAL FIELD

[0001] This invention relates to portable handheld computing devices,such as handheld personal computers (H/PCs). More particularly, thisinvention relates to an external notification system for handheldcomputing devices.

BACKGROUND OF THE INVENTION

[0002] Small, handheld computing devices have been steadily growing inpopularity in recent years. The devices go by different names, includingpalmtops, pocket computers, personal digital assistants, personalorganizers, and the like. This disclosure is primarily directed to aclass of computing devices referred to as handheld personal computers,or “H/PCs”, although aspects of this invention can be implemented othertypes of handheld computing devices.

[0003] H/PCs are small, pocket-sized devices having an LCD (liquidcrystal display) with a touch-sensitive screen, a stylus to enter datathrough the screen, s and an input device such as a keypad or miniatureQWERTY keyboard. H/PCs have a microprocessor, memory, and are capable ofrunning an operating system and one or more applications on theoperating system. Microsoft Corporation recently released the Windows®CE operating system for use on H/PCs, which is a scaled-down version ofits popular Windows® operating systems manufactured for personalcomputers.

[0004] One of the most desirable characteristics of H/PCs is theirportability. The compact, portable H/PCs provide a user with realcomputer-like applications—such as email, PIM (personal informationmanagement), Internet browser, spreadsheet, word processing. A travelinguser can receive email messages, schedule meetings or appointments, andbrowse the Internet from the H/PC.

[0005] Some handheld computing devices can notify a user of a scheduledevent, if they are turned on. The device plays an alarm sound, orpops-up a dialog box, to alert the user of the event. However, manyhandheld computing devices have no means of notifying a user when theyare turned off, which is normally the case to conserve power. While somehandheld computing devices might be configured to wake up and sound analarm, such devices typically time out the alarm after a short period.As a result, the user can miss the alarm because it terminates beforebeing noticed. In addition, audio alarms may, on occasions, be too faintfor the surrounding environment (e.g., an alarm might be overpowered bynoise in an airplane flight) or not sufficiently strong to command auser's attention when the user is not immediately next to the device.

[0006] It would be advantageous to develop a notification system forhandheld computing devices, such as H/PCs, that notifies a user when anevent occurs regardless of whether the device is on or off, open orclosed, pocketed, or docked, and which remains active until the useracknowledges it. It would also be advantageous to develop a notificationsystem that provide a lasting external notification to the user, ratherthan a short-run alarm or a pop-up box that is not externally visible.

SUMMARY OF THE INVENTION

[0007] This invention concerns a portable handheld computing devicehaving a notification system that alerts a user of an event regardlessof whether the device is on or off, open or closed, pocketed, or docked.The notification system has a notification mechanism that is activatedupon occurrence of the event and remains active until the useracknowledges the activated mechanism.

[0008] According to an aspect of this invention, the notificationmechanism is a light emitting diode (LED) that is (by user option)turned on by the notification system when an event occurs. The LEDremains activated until the user takes action to handle the event.

[0009] According to another aspect of this invention, the LED is mountedexternally on the handheld computing device. More particularly, thehandheld device has a casing with a lid and a base. The LED is mountedon the lid's upper surface and wraps around to one of the end surfacesof the lid. In this manner, the LED is visible to the user when the lidis closed onto the base (i.e., the device is off) or when the lid isopen (i.e., the device is on).

[0010] According to another aspect of this invention, the notificationmechanism also has a deactivation button mounted externally of thehandheld computing device. The user depresses the deactivation button todeactivate the LED (as well as any other external signals that may beused). In one implementation, the LED and deactivation button areintegrated as a single component mounted on the device lid.

[0011] According to yet another aspect of this invention, a notificationprogram runs on the handheld computing device and is callable by anapplication to help schedule events. The notification program setstimers with the system clock, which is always on even when the handheldcomputer is turned off. When a timer expires, the system clock sends aninterrupt to the notification program to wake up the notificationprogram so that it can turn on the LED. The LED is coupled to power sothat it can remain on and the notification program can go back asleep.The LED continues emitting light until the user notices and presses thedeactivation button.

[0012] According to another aspect, the notification program places ataskbar annunciator in the taskbar of an operating graphical userinterface window when an event is realized. After depressing thedeactivation button in recognition of the LED, the user can actuate thetaskbar annunciator with a stylus or other means and jump directly tothe source of the event. For instance, actuating the taskbar annunciatormight open a window that describes an appointment, which is the root ofthe event.

[0013] According to another aspect, the notification program supports agraphical user interface that enables a user to set notification optionsspecifying how external notification is to operate. For instance, theuser might prefer a flashing light in combination with an alarm. Theuser can set these options through the user interface. The options aresaved in a structure that is accessed when a user notification is set.

[0014] According to still another aspect, the notification program iscalled by the applications on the handheld computing device through anapplication program interface (API). The API defines a time parameterthat specifies when the user notification should occur and a typeparameter that references the structure containing the user-definednotification options.

BRIEF DESCRIPTION OF THE DRAWINGS

[0015] The same reference numbers are used throughout the drawings toreference like components and features.

[0016]FIG. 1 is a perspective view of a handheld computing device in anopen position.

[0017]FIG. 2 provides front, side, and end elevation views of thehandheld computing device in a closed position.

[0018]FIG. 3 is a block diagram of the handheld computing device.

[0019]FIG. 4 is a block diagram of the hardware/software architecture ofa notification system implemented in the handheld computing device.

[0020]FIG. 5 is a diagrammatic illustration of a graphical userinterface window embodied as an “options” dialog box.

[0021]FIG. 6 is a diagrammatic illustration of a screen image presentedon a display of the handheld computing device.

[0022]FIG. 7 is a diagrammatic illustration of a graphical userinterface window embodied as a “notification” dialog box.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

[0023]FIGS. 1 and 2 show a handheld computing device 20. As used herein,is “handheld computing device” means a small general computing devicehaving a processing unit that is capable of running one or moreapplication programs, a display, and an input mechanism that istypically something other than a full-size keyboard. The input mechanismmight be a keypad, a touch-sensitive screen, a track ball, atouch-sensitive pad, a miniaturized QWERTY keyboard, or the like.

[0024] The handheld computing device 20 of FIGS. 1 and 2 is embodied asa handheld personal computer (H/PC). The terms “handheld computingdevice” and “handheld personal computer” (or H/PC) are usedinterchangeably throughout this disclosure. However, in otherimplementations, the handheld computing device may be implemented as apersonal digital assistant (PDA), a personal organizer, a palmtopcomputer, a computerized notepad, or the like.

[0025] Handheld computing device 20 has a casing 22 with a cover or lid24 and a base 26. The lid 24 is hingedly connected to the base 26 topivot between an open position (FIG. 1) and a closed position (FIG. 2).The handheld computing device 20 has an LCD (liquid crystal display) 28with a touch-sensitive screen mounted in lid 24. The device is equippedwith a stylus 30 to enter data through the touchscreen display 28 and aminiature QWERTY keyboard 32, which are both mounted in base 26. Thehandheld computing device 20 can also be implemented with a wirelesstransceiver (not shown) such as an IR (infrared) transceiver and/or anRF (radio frequency) transceiver. Although the illustratedimplementation shows a two-member H/PC 20 with a lid 24 and a base 26,other implementations of the H/PC might comprise an integrated bodywithout hinged components, as is the case with computerized notepads(e.g., Newton® from Apple Computers).

[0026] In the above respects, the H/PC 20 is of conventional design andwill not be described in detail. Many manufacturers make suitable H/PCs.However, unlike conventional H/PCs, the handheld computing device 20 ofthis invention is further implemented with an external notificationsystem.

[0027] In general, the external notification system is designed to alerta user of an event regardless of whether the handheld computing deviceis presently on or off, or whether the device is presently running aprogram. The notification system has a notification mechanism that isactivated upon occurrence of the event to alert the user. Thenotification mechanism remains active until the user acknowledges it,even if the handheld computing device is otherwise turned off. Thenotification mechanism is an external, sensory perceptible mechanismthat attracts the user's attention when the device is on or off andregardless of whether the lid is open or closed. The notificationmechanism can be implemented in a variety of ways, including a light, anaudio generator, a vibration device, or other forms of sensoryperceptible mechanisms. In addition, these mechanisms may be used incombination, or with other forms of sensory perceptible notices, such asa visual dialog box on the display.

[0028] In the preferred implementation, the external notificationmechanism includes an externally mounted LED (light emitting diode) 40.When activated as a result of an event, the LED is illuminated or madeto flash. The LED 40 remains activated until the user acknowledges it.

[0029] More particularly, the LED 40 is mounted on the external surfaceof the H/PC 20 in a location that the user can view the light fromdifferent angles and a sides of the H/PC. In addition, the LED 40 ispositioned to be seen when the lid 24 is open or closed. As shown inFIG. 2, the H/PC casing 22 has an upper surface 42 on lid 24, a lowersurface 44 on base 26, a front side surface 46 (on both lid 24 and base26), an opposing back side surface 48 (on both lid 24 and base 26), andopposing end surfaces 50 and 52 (on both lid 24 and base 26). The endsurfaces 50 and 52 are dimensionally shorter than the elongated sidesurfaces 46 and 48.

[0030] The LED 40 is positioned on the upper surface 42 and wraps aroundan upper corner to extend onto the end surface 50. The LED is raised onthe end surface 50 to be visible from the front. The LED may or may notbe raised on the upper surface 42. In this manner, the LED 40 can beviewed when the case 22 is closed, either from above by viewing the LEDportion on the upper surface 42 (for instance when the H/PC is sittingon a desk), or from the side by viewing the LED portion on the endsurface 50 (for instance when the H/PC is slid upright into a shirtpocket, purse, or briefcase). Additionally, the LED 40 can be viewedwhen the case 22 is open (FIG. 1) by viewing the raised LED portion onthe end surface 50. As an alternative to raising the LED on the endsurface , the LED 40 may be configured to wrap around to the innersurface of the lid 24 to be viewable when the case 22 is open. The LEDitself might be configured in the illustrated shape, or alternatively anormally shaped LED is configured to emit light into light- transmissivetubing that conforms to the illustrated shape.

[0031] As shown in the side view of FIG. 2, the H/PC 20 also has adeactivation mechanism to deactivate the LED 40 and any other externalnotification mechanism. In the illustrated implementation, thedeactivation mechanism is a deactivation button 54 that is externallymounted on the end 50 to enable a user to quickly locate and deactivatethe external notification mechanisms, regardless of whether the lid isopen or closed. In a preferred embodiment, the deactivation button 54and LED 40 are integrated as a single component. The LED 40 can beconstructed to project slightly above the face of the deactivationbutton 54 to act as a bumper to reduce the likelihood of accidentalactuation. In other arrangements, is the button may be locatedseparately from the LED.

[0032]FIG. 3 shows functional components of the handheld computingdevice 20. It has a processor 60, a memory 62, a display 28, and akeyboard 32. The memory 62 generally includes both volatile memory(e.g., RAM) and non-volatile memory (e.g., ROM, PCMCIA cards, etc.). Anoperating system 64 is resident in the memory 62 and executes on theprocessor 60. The H/PC 20 preferably runs the Windows® CE operatingsystem from Microsoft Corporation. This operating system is a derivativeof Windows® brand operating systems, such as Windows® 95, that isespecially designed for handheld computing devices. However, thehandheld computing device may be implemented with other operatingsystems.

[0033] One or more application programs 66 are loaded into memory 62 andrun on the operating system 64. Examples of applications include emailprograms, scheduling programs, PIM (personal information management)programs, word processing programs, spreadsheet programs, Internetbrowser programs, and so forth. The H/PC 20 also has a notificationmanager 68 loaded in memory 62, which executes on the processor 60. Thenotification manager 68 handles notification requests from theapplications 66, as is described below in more detail with reference toFIG. 4.

[0034] The H/PC 20 has a power supply 70, which is implemented as one ormore batteries. The power supply 70 might farther include an externalpower source i that overrides or recharges the built-in batteries, suchas an AC adapter or a powered docking cradle.

[0035] The H/PC 20 is also shown with three types of externalnotification mechanisms: an LED 40, a vibration device 72, and an audiogenerator 74. These devices are directly coupled to the power supply 70so that when activated, they remain on for a duration dictated by thenotification mechanism even though the H/PC processor and othercomponents might shut down to conserve battery power. The LED 40preferably remains on indefinitely until the user takes action. Thecurrent versions of the vibration device 72 and audio generator 74 usetoo much power for today's H/PC batteries, and so they are configured toturn off when the rest of the system does or at some finite durationafter activation.

[0036]FIG. 4 shows the software and hardware architecture of anotification system 80 for the H/PC 20. The notification system 80 has anotification manager 68, which is callable by the applications 66through a user notification application program interface (API). The APIcreates a new user notification or modifies an existing one. It is givenas:

PegSetUserNotification(hNotification, *AppName, *Time,*UserNotification)

[0037] The API has four parameters, three of which are pointers. The“hNotification” parameter specifies whether the call relates to creatinga new user notification or to modifying an existing notification. Theparameter is either zero, when a new notification is to be added, orcontains an identity of the notification to be modified.

[0038] The “AppName” pointer points to a null-terminated string thatspecifies the name of the application 66 that owns the notification. Thesystem uses the application's primary icon as the taskbar annunciatorthat is set by the notification system to notify the user and enableimmediate-click access to the application responsible for thenotification. The use of a taskbar annunciator is described below withreference to FIG. 6. The “Time” pointer points to the system timestructure that specifies a time when the notification should occur. The“UserNotification” pointer points to a Peg_User_Notification structurethat describes the events that are to occur when the notification timeis reached.

[0039] More particularly, the Peg_User_Notification structure is a userconfigurable structure that holds notifications options preferred by theuser. The application passes the user's preferences to the system whenscheduling an event by specifying the address of the structure. Eachapplication passes in a structure that applies only to it, sonotifications for different applications can be differentiated.Similarly, an application can pass in different structures for differentevents, so individual notifications can be differentiated.

[0040] The Peg_User_Notification structure contains information used toinitialize a dialog box user interface that is presented to the userwhen setting notification s options. FIG. 5 shows an example dialog box100, which is supported by the notification system 80. In this example,the dialog box 100 includes an option 102 as to whether to sound analarm and a drop-down menu 104 that lists various available alarmsounds, such as “Beep”. The drop-down menu 104 might contain identitiesof other “.wav” files containing different alarm sounds the user mightprefer. A repeat option 106 is also provided so that the user can electto have the alarm repeated.

[0041] The dialog box 100 also has an option 108 that allows a user toenable or disable a dialog box that can be displayed describing thenotification when it goes off. An option 110 allows the user to electwhether to have the LED 40 flash, or not, during notification.

[0042] It is noted that the dialog box 100 is provided for examplepurposes, and other options may be included. For instance, the dialogbox 100 might include an option to enable/disable the vibration device72, or to combine the external notification mechanisms so the LED 40,vibration device 72, and alarm 74 all go off at different times in acontinuous cycle.

[0043] Once the user fills in the dialog box 100, the options are storedin the Peg_User_Notification structure. This structure is providedbelow:

UserNotificationType {

DWORD ActionFlags;

TCHAR *DialogTitle;

TCHAR *DialogText;

TCHAR *Sound

DWORD MaxSound;

DWORD Reserved;

}

[0044] The “ActionFlags” parameter specifies the actions to take when anotification event occurs. This parameter is a combination of bit flags,as set forth in the following table. Value Meaning PUN_LED Flash LED.PUN_VIBRATE Vibrate the Device. PUN_DIALOG Display the user notificationdialog box. When this structure is passed to the PegSetUserNotificationAPI, the DialogTitle and DialogText pointers point to the title andtext. PUN_SOUND Play the sound file identified by the Sound pointer.PUN_REPEAT Repeat sound file for T seconds.

[0045] The “DialogTitle” pointer specifies the title of the usernotification dialog box. If this parameter is null, no dialog isdisplayed. The “DialogText” pointer specifies the text of the usernotification dialog box. If this parameter is null, no dialog isdisplayed. The “Sound” pointer references a buffer that contains theunqualified name of a sound file to play. The “MaxSound” parameterspecifies the maximum length of the string that can be copied into thesound buffer. The “Reserved” parameter is reserved for future use and ispresently set to zero.

[0046] With reference again to FIG. 4, the notification manager 68passes a command to an alarm manager 82 to set an alarm for anotification event. The alarm manager 82 generates a set alarm commandthat is output to the real-time clock 84 to tell the clock to set analarm at the scheduled time of the notification event. When the clockreaches the event time, it notifies an interrupt manager 86 through aninterrupt. The interrupt manager 86 informs the notification manager 68that the time of the event has arrived. The notification manager 68 thensends out activation commands to an LED driver 88 to turn on LED 40. Abutton device driver 90 is also provided to handle interrupts generatedwhen the notification button 54 is depressed to disable the LED 40.

[0047] To explain the architecture in the context of an examplesituation, suppose the user starts a calendar application 66 andschedules an event notification for 8:00 AM. The user clicks on an“options” button to bring up the dialog box 100 (FIG. 5) to ensure thatthe LED and alarm are both enabled. The user then closes the dialog box100 and saves the clock settings. The calendar application 66 calls thenotification manager 68 using the PegSetUserNotification API, whichincludes a pointer to the structure containing information specifyinghow the LED and alarm are to behave.

[0048] The notification manager 68 stores the scheduled notification andexamines it in light of any other scheduled user notifications todetermine which notification is associated with the next chronologicalevent to occur. Suppose that the calendar notification is next to occur.The notification manager 68 then calls the alarm manager 82, which inturn sets a hardware alarm for 8:00 AM in real-time clock 84. The usercan then exit the application 66 and turn off the device.

[0049] At 8:00 AM, the real-time clock 84 sends an interrupt tointerrupt manager 86. The interrupt manager 86 identifies the interruptas clock-related, and routes the interrupt to the alarm manager 82. Uponreceiving the interrupt, the alarm manager 82 pulses the event that thenotification manager 68 has been waiting on. The notification manager 68determines that the event is associated with the 8:00 AM calendar alarmand checks the user options to decide how the user wishes to benotified. Assuming that the user wants the light to flash and an alarmto sound, the notification manager 68 calls the LED device driver 88 tostart flashing the LED 40 and concurrently plays the selected alarm. Thenotification manager 68 also creates a taskbar annunciator.

[0050] Suppose that the use is not present at 8:00 AM. The handheldcomputing device 20 times out and turns off. Due to the direct couplingto power, however, the LED 40 remains flashing. The flash rate isselected to minimize power usage, without compromising usability. As oneexample, the LED flashes once every two seconds for 1/16^(th) of asecond. The alarm preferably times out with the computing device 20 toconserve power, but it can be configured to repeat until the useracknowledges the notice.

[0051] When the user returns, he/she sees the flashing LED 40 andpresses the deactivation button 54. Depressing button 54 generates aninterrupt that is routed by interrupt manager 86 to keyboard devicedriver 90. The keyboard driver 90 instructs the LED driver 88 to turnoff the LED 40. It is noted that the clock 84 and deactivation button 54work the same if the H/PC 20 is already on. They still generateinterrupts, only the interrupts do not wake up the device.

[0052] The deactivation button 54 is preferably implemented to turn offonly the external notification mechanisms (i.e., LED and alarm) becausethese mechanisms can be annoying and consume a significant quantity ofpower. The taskbar annunciator and optional dialog box remain intact andare not disabled by the deactivation button 54. As a result, the usercan open the H/PC and glean more information concerning the notice fromthe taskbar annunciator and dialog box.

[0053] When the user opens the H/PC, the notification system 80optionally causes a taskbar annunciator for the calendar application tobe displayed. FIG. 6 shows an example screen image 120 showing the taskbar 122 with a “Start” softkey 124 and a time/date area 126. A taskbarannunciator 128 for the calendar application is displayed in thetime/date area 126. The annunciator 128 is the icon for the calendarapplication, thereby immediately informing the user that the source ofthe notification is the calendar application. The user can then click onthe taskbar annunciator 128 using the stylus to start the calendarapplication, as represented by the calendar softkey 130.

[0054] The notification system 80 can optionally display a dialog boxthat explains the notification to the user; this is faster than startingthe originating application, and provides a more noticable notificationif the H/PC is being used when the notification event occurs. FIG. 7shows an example dialog box 140, which contains a message that informsthe user of the 8:00 AM alarm. The user is also presented with theoption of accepting the alarm or rescheduling it for an additionalfive-minute period. It is noted that tapping the taskbar annunciator 128or a softkey in the dialog box 140 deactivates the LED 40 and alarm, inthe same manner as pressing the deactivation button 54. Touching anyannunciator or acknowledging any dialog box turns off the externalsignals, since this tells the notification system that the user is awareof the notifications.

[0055] The notification system 80 can handle an arbitrary number ofnotifications from multiple applications. The notification manager 68handles the scheduled events in temporal order. In some situations, theflashing LED might represent multiple notifications. Since a single flagbit controls the LED, the user presses the deactivation button 54 onceto turn off the LED 40. The user can then open the device and examinethe various annunciators to learn which applications are responsible forthe notifications.

[0056] A fall set of user notification APIs is attached to thisdisclosure as Appendix A.

[0057] Although the invention has been described in language specific tostructural features and/or methodological steps, it is to be understoodthat the invention defined in the appended claims is not necessarilylimited to the specific features or steps described. Rather, thespecific features and steps are disclosed as preferred forms ofimplementing the claimed invention.

APPENDIX A

[0058] Notification Reference

[0059] The following functions and structures are used with user andapplication notifications. For further information see the Windows CEProgrammer's Reference.

[0060] Notification Functions

[0061] PegClearUserNotification

[0062] PegGetUserNotificationPreferences

[0063] PegHandleAppNotifications

[0064] PegRunAppAtEvent

[0065] PegRunAppAtTime

[0066] PegSetUserNotification

[0067] Notification Structures

[0068] PEG_USER_NOTIFICATION

[0069] API REFERENCE

[0070] The PegClearUserNotification function deletes a user notificationthat was created by a previous call to the functionPegSetUserNotification.

[0071] BOOL PegClearU serNotification( // notify.h

[0072] HANDLE hnotification // handle of notification to delete );

[0073] Parameters

[0074] hNotification

[0075] Identifies the user notification to delete.

[0076] Return Values

[0077] If the function succeeds, the return value is TRUE. If thefunction fails, the return value is FALSE.

[0078] See also

[0079] Windows CE Notifications, PegSetUserNoti fication

[0080] The PegGetUserNotificationPreferences function queries the userfor notification settings by displaying a dialog box showing optionsthat are valid for the current hardware platform.

[0081] BOOL PegGetUserNotificationPreferences( // notify.h

[0082] HWND hWndParent, // handle of parent window

[0083] PPEG_USER_NOTIFICATION IpNotirication // structure withnotification settings );

[0084] Parameters

[0085] hWndParent

[0086] Identifies the parent window for the notification settings dialogbox.

[0087] IpNotification

[0088] Points to a PEG_USER_NOTIFICATION structure. When calling thefunction, this structure contains data used to initialize thenotification settings dialog box. When the function returns, thisstructure contains the user's notification settings.

[0089] Return Values

[0090] If the function succeeds, the return value is TRUE. If thefunction returns TRUE, the returned settings should be saved, andconsidered when calling PegSetUserNotification. If the function fails,the return value is FALSE.

[0091] See Also

[0092] Windows CE Notifications, PegSetUserNotification,PEG_USER_NOTIFICATION

[0093] The PegHandleAppNotifications function marks as “handled” allnotifications previously registered by the given application. Thefunction turns off the LED and stops vibration (if they were on) onlyfor the given application's events, and removes the taskbar annunciator.

[0094] BOOL PegHandleAppNotifications( // notify.h

[0095] TCHAR *pwszAppName // name of application whose events arehandled );

[0096] Parameters

[0097] pwszAppName

[0098] Points to a null-terminated string that specifies the name of theapplication whose events are to be marked as “handled”.

[0099] Return Values

[0100] If the function succeeds, the return value is TRUE. If thefunction fails, the return value is FALSE.

[0101] See Also

[0102] Windows CE Notifications, PegGetUserNotification,PegSetUserNotification

[0103] The PegRunAppAtEvent function starts running an application whenthe given event occurs.

[0104] Windows CE Notes:

[0105] Note NOTIFICATION_EVENT_SYSTEM_BOOT is not supported

[0106] BOOL PegRunAppAtEvent( // notify.h

[0107] TCHAR *pwszAppName, // name of application to run

[0108] LONG JWhichEvent // event at which the application is to run );

[0109] Parameters

[0110] pwszAppName

[0111] Points to a null-terminated,string that specifies the name of theapplication to be started.

[0112] IWhichEvent

[0113] Specifies the event at which the application is to be started.This parameter can be one of the following values.

[0114] Value Meaning

[0115] NOTIFICATION_EVENT_NONE No events—remove all event registrationsfor this application.

[0116] NOTIFICATION_EVENT_SYNC_END When data synchronization finishes.

[0117] NOTIFICATION_EVENT_ON_AC_POWER When AC power is connected.

[0118] NOTIFICATION_EVENT_OFF_AC_POWER When AC power is disconnected.

[0119] NOTIFICATION_EVENT_NET_CONNECT When a network connection is made.

[0120] NOTIFICATION_EVENT_NET_DISCONNECT When the network isdisconnected.

[0121] NOTIFICATION_EVENT_DEVICE_CHANGE When a PCMCIA device is changed.

[0122] NOTIFICATION_EVENT_IR_DISCOVERED When an infrared partner isfound.

[0123] NOTIFICATION_EVENT_RS232_DETECTED When an RS232 connection ismade.

[0124] NOTIFICATION_EVENT_RESTORE END When a full device data restorecompletes.

[0125] Return Values

[0126] If the function succeeds, the return value is TRUE. If thefunction fails, the return value is FALSE.

[0127] Remarks

[0128] The application is started with a system-defined command line. Ifthere was already an instance of the application running, the newinstance must send a private message to the existing instance and thenshut down. The command line, which corresponds to the registered event,can be one of the following string constants.

[0129] Constant Value

[0130] APP_RUN_AT_BOOT “AppRunAtBoot”

[0131] APP_RUN_AFTER_SYNC “AppRunAfterSync”

[0132] APP_RUN_AT_AC_POWER_ON “AppRunAtAcPowerOn”

[0133] APP_RUN_AT_AC_POWER_OFF “AppRunAtAcPowerOff”

[0134] APP_RUN_AT_NEET_CONNECT “AppRunAtNetConnect”

[0135] APP_RUN_AT_NET_DISCONNECT “AppRunAtNetDisconnect”

[0136] APP_RUN_AT_DEVICE_CHANGE “AppRunDeviceChange”

[0137] APP_RUN_AT_IR_DISCOVERY “AppRunAtlrDiscovery”

[0138] APP_RUN_AT_RS232_DETECT “AppRunAtRs232Detect”

[0139] APP_RUN_AFTER_RESTORE “AppRunAfterRestore”

[0140] Remarks

[0141] In some cases, the preceding strings are merely the prefix of thecommand line, and the rest of the command line is used as a parameter.

[0142] You should use this function sparingly, because automaticallystarting an application can confuse the user and cause low-memoryconditions on a machine with restricted memory. Ideally, the applicationshould be small and non-intrusive.

[0143] See Also

[0144] Windows CE Notifications, PegRunAppAtTime, PegEventHasOccurred

[0145] The PegRunAppAtTime function requests the system to start runningthe given application at the given time.

[0146] BOOL PegRunAppAtTime( // notify.h

[0147] TCHAR *pwszAppName, // name of application to run

[0148] SYSTEMTIME *IpTime // time when to run the application

[0149] Parameters

[0150] pwszAppName

[0151] Points to a null-terminated string that specifies the name of theapplication to be run.

[0152] IpTime

[0153] Points to a SYSTEMTIME structure that specifies the time when thegiven application is to be run. If this parameter is NULL, the existingrun request is deleted and no new request is entered.

[0154] Return Values

[0155] If the function succeeds, the return value is TRUE. If thefunction fails, the return value is FALSE.

[0156] Remarks

[0157] Calling this function replaces any previous run request.

[0158] The system passes the APP_RUN_AT_TIME string to the applicationas the command line. If an instance of the application is alreadyrunning, the new instance must send a private message to the existinginstance and then shut down.

[0159] You should use this function sparingly, because automaticallystarting an application can confuse the user and cause low-memoryconditions on a machine with restricted memory. Ideally, the applicationshould be small and non-intrusive.

[0160] See Also

[0161] Windows CE Notifications, PegRunAppAtEvent

[0162] The PegSetUserNotification function creates a new usernotification or modifies an existing one.

[0163] HANDLE PegSetUserNotification( // notify.h

[0164] HANDLE hNotification, // handle of the notification to overwrite,or zero

[0165] TCHAR *pwszAppName, // name of application that owns thisnotification

[0166] SYSTEMTIME *IpTime, // time when the notification is to occur

[0167] PPEG_USER_NOTIFICATION IpUserNotirication // containsnotification parameters );

[0168] Parameters

[0169] hNotirication

[0170] Identifies the notification to overwrite, or zero to add a newnotification.

[0171] pwszAppName

[0172] Points to a null-terminated string that specifies the name of theapplication that owns this notification. The system uses theapplication's primary icon as the taskbar annunciator for thenotification. The user can start the application by selecting theannunciator.

[0173] IpTime

[0174] Points to the SYSTEMTIME structure that specfies the time whenthe notification should occur.

[0175] IpUserNotirication

[0176] Points to the PEG_USER_NOTIFICATION structure that describes theevents that are to occur when the notification time is reached.

[0177] Return Values

[0178] If the function succeeds, the return value is the handle of thenotification. An application can use the handle to overwrite or deletethe notification. The return value is zero if the notification could notbe set.

[0179] Remarks

[0180] The notification occurs at the specified time, without startingthe application. The application can specify the notification options,including whether to light the LED, generate a sound, or display adialog box. However, an application typically uses thePegGetUserNotificationPreferences function to allow the user to set thenotification options.

[0181] The user can start the owning application when the notificationoccurs. In this case, the system starts a new instance of theapplication using the APP_RUN_TO_HANDLE_NOTIFICATION string as theprefix of the command line, and the notification handle (converted to astring) as the postfix. If another instance of the application isalready running, the new instance must pass a private message to the oldinstance and then shut down.

[0182] See Also

[0183] Windows CE Notifications, PegHandleAppNotifications

[0184] The PEG_USER_NOTIFICATION structure contains information used toinitialize the user notifications settings dialog box, and receives theuser's notification preferences entered by way of the dialog box. Alsoused when setting a user notification.

[0185] typedef struct UserNotificationType {

[0186] DWORD ActionFlags;

[0187] TCHAR *pwszDialogTitle;

[0188] TCHAR *pwszDialogText;

[0189] TCHAR *pwszSound;

[0190] DWORD nMaxSound;

[0191] DWORD dwReserved; } PEG_USER_NOTIFICATION,*PPEG_USER_NOTIFICATION;

[0192] Members

[0193] ActionFlags

[0194] Specifies the action to take when a notification event occurs.This parameter can be a combination of the following flags.

[0195] Value Meaning

[0196] PUN_LED Flash the LED.

[0197] PUN_VIBRATE Vibrate the device.

[0198] PUN_DIALOG Display the user notification dialog box. When thisstructure is passed to the

[0199] PegSetUserNotification function, the pwszDialogTitle andpwszDialogText members must provide the title and text of the dialogbox.

[0200] PUN_SOUND Play the sound specified by the pwszSound member. Whenpassed to PSVN, the pwszsound member must provide the name of the soundfile.

[0201] PUN_REPEAT Repeat the pwszSound for 10-15 seconds. Only valid ifPUN_SOUND is set.

[0202] Any flag that is not valid on the current hardware platform isignored.

[0203] pwszDialogTitle

[0204] Specifies the title of the user notification dialog box. If thisparameter is NULL, no dialog is displayed. ThePegGetUserNotificationPreferences function ignores this member.

[0205] pwszDialogText

[0206] Specifies the text of the user notification dialog box. If thisparameter is NULL, no dialog is displayed. ThePegGetUserNotificationPreferences function ignores this member.

[0207] pwszSound

[0208] Points to a buffer that contains the unqualified name of a soundfile to play. (The file is assumed to reside in the system mediadirectory.) This parameter is ignored if the ActionFlags member does notinclude the PUN_SOUND flag.

[0209] nMaxSound

[0210] Specifies the maximum length of the string that thePegGetUserNotificationPreferences function can copy into the pwszsoundbuffer. Because the string may be a path name in a future release, thebuffer must be at least the length derived by the following expression:PATH_MAX * sizeof(TCHAR). This member is ignored by thePegSetUserNotification function.

[0211] dwReserved

[0212] Reserved; must be zero.

[0213] Remarks

[0214] This structure is passed in the PegGetUserNotificationPreferencesfunction. Initial settings are used to populate the dialog. If thefunction returns TRUE, the returned settings should be saved, andconsidered when calling PegSetUserNotification. Settings for hardwarenot on the current device will be ignored.

[0215] It is also used when calling PegSetUserNotification, to describewhat should happen when the notification time is reached.

[0216] See Also

[0217] Windows CE Notifications, PegGetUserNotificationPreferences,PegSetUserNotification

1. A portable handheld computing device comprising: a notificationsystem to alert a user of an event regardless of whether the handheldcomputing device is on or off; and the notification system having anexternal notification mechanism that is activated upon occurrence of theevent and that remains active until the user acknowledges the activatedmechanism.
 2. A portable handheld computing device as recited in claim 1wherein the external notification mechanism comprises a light.
 3. Aportable handheld computing device as recited in claim 1 wherein theexternal notification mechanism comprises a flashing light.
 4. Aportable handheld computing device as recited in claim 1 wherein theexternal notification mechanism comprises an audio generator.
 5. Aportable handheld computing device as recited in claim 1 wherein theexternal notification mechanism comprises a vibration device.
 6. Aportable handheld computing device comprising: a processor; a display;an operating system executing on the processor to provide a graphicaluser interface environment capable of presenting at least one graphicalwindow on the display; at least one application running on the operatingsystem; and a notification system that is callable by the application toalert a user of an event, the notification system having a sensoryperceptible notification mechanism that is activated as a result of theevent to notify the user.
 7. A portable handheld computing device asrecited in claim 6 wherein the notification mechanism comprises a light.8. A portable handheld computing device as recited in claim 6 whereinthe notification mechanism comprises a dialog box presented on thedisplay.
 9. A portable handheld computing device as recited in claim 6wherein the notification mechanism comprises an audio generator.
 10. Aportable handheld computing device as recited in claim 6 wherein thenotification mechanism comprises a vibration device.
 11. A portablehandheld computing device as recited in claim 6 wherein the notificationsystem also has a deactivation mechanism to deactivate the notificationmechanism.
 12. A portable handheld computing device as recited in claim6 wherein the notification mechanism comprises a light emitting diode(LED) and the notification system farther comprises a button integratedwith the LED to deactivate the LED.
 13. A portable handheld computingdevice as recited in claim 6 wherein the notification system supports agraphical user interface which enables a user to set notificationoptions specifying how the notification mechanism is to operate.
 14. Aportable handheld computing device as recited in claim 6 wherein: thegraphical user interface provided by the operating system has a taskbarand the event relates to the application, and the notification systemplaces a taskbar annunciator in the taskbar, which upon actuation,starts the application responsible for the event.
 15. A portablehandheld computing device comprising: a casing; and a light emittingdevice mounted externally on the casing, the light emitting device beingactivated upon occurrence of an event to notify a user.
 16. A portablehandheld computing device as recited in claim 15 , wherein the lightemitting device comprises an LED.
 17. A portable handheld computingdevice as recited in claim 15 , wherein: the casing has an uppersurface; and the light emitting device is mounted externally on theupper surface.
 18. A portable handheld computing device as recited inclaim 15 , wherein: the casing has upper and lower surfaces, opposingfront and back side surfaces, and opposing end surfaces, the ends beingdimensionally shorter than the front and back side surfaces; and thelight emitting device is positioned on the upper surface and wrapsaround to one of the end surfaces.
 19. A portable handheld computingdevice as recited in claim 15 , wherein: the casing comprises a base anda lid; and the light emitting device is mounted externally on the lid.20. A portable handheld computing device as recited in claim 15 ,wherein: the casing comprises a base and a lid that opens and closesrelative to the base, the lid having an upper surface and opposing endsurfaces; and the light emitting device is positioned on the uppersurface of the lid and wraps around to one of the end surfaces so thatthe light emitting device is visible when the lid is opened or closed.21. A portable handheld computing device as recited in claim 15 ,further comprising a button mounted to the casing to deactivate thelight emitting device.
 22. A portable handheld computing device asrecited in claim 15 , wherein the casing comprises a base and a lid, andfurther comprising a button mounted to the lid to deactivate the lightemitting device.
 23. A portable handheld computing device as recited inclaim 15 , further comprising a button to deactivate the light emittingdevice, the button being integrated with the light emitting device. 24.A portable handheld computing device comprising: an externalnotification mechanism that is activated to notify a user of an eventregardless of whether the handheld computing device is turned on or off;a deactivation mechanism that enables a user to deactivate thenotification mechanism; and the notification mechanism being configuredto remain active until the user deactivates the notification mechanismusing the deactivate mechanism.
 25. A portable handheld computing deviceas recited in claim 24 , wherein the notification mechanism is a sensoryperceptible device selected from a group comprising a light, an audiogenerator, and a vibration device.
 26. A portable handheld computingdevice as recited in claim 24 , wherein the deactivation mechanism is abutton mounted externally of the handheld computing device.
 27. Aportable handheld computing device as recited in claim 24 , wherein: thenotification mechanism comprises a light emitting diode (LED); and thedeactivation mechanism comprises a button, the button and the LED beingintegrated as a single component.
 28. A portable handheld computingdevice as recited in claim 27 , wherein the integrated LED and buttonare mounted externally of the handheld computing device.
 29. Anotification system for a handheld computing device capable of executingone or more applications, comprising: a notification program callable byan application to schedule user notification events; a light emittingdiode (LED) mounted externally of the handheld computing device tovisually alert a user when the event occurs, the LED being coupled toreceive power from a power supply of the handheld computing device sothat the LED can remain activated even when the handheld computingdevice is off; and a deactivation button mounted externally of thehandheld computing device to deactivate the LED.
 30. A notificationsystem as recited in claim 29 , wherein the LED and button areintegrated as a single component.
 31. A notification system as recitedin claim 29 , wherein the notification program, in response to actuationof the deactivation button, sets a taskbar annunciator on a display ofthe handheld computing device that is associated with the application.32. A notification system as recited in claim 29 , wherein thenotification program comprises: a notification manager to manage one ormore events, the notification manager generating a command to set a timewhen the event is scheduled; an alarm manager to receive the set timecommand from the notification manager and to generate a set alarmcommand which informs a clock to set an alarm at the time of the event;and an interrupt manager to receive an interrupt from the clock when thetime of the event arrives and pass the interrupt to the notificationmanager so that the notification manager can activate the LED.
 33. In aportable handheld computing device, an application program interfaceembodied on a computer-readable medium for creating a user notificationthat activates at least one sensory perceptible notification mechanism,the application program interface defining parameters comprising a timeparameter that specifies when the user notification should occur and atype parameter that references a structure containing informationspecifying how the sensory perceptible notification mechanism is to beactivated.
 34. An application program interface as recited in claim 33 ,further comprising a parameter that identifies an application residenton the handheld computing device that is responsible for the usernotification.
 35. An operating system for a portable handheld computingdevice, embodied on a computer-readable medium, comprising anapplication program is interface as recited in claim 33 .
 36. In aportable handheld computing device having an operating system thatprovides a graphical user interface environment capable of presenting atleast one graphical window on a display and an external notificationmechanism comprising at least one of light and an alarm, a notificationprogram executing on the operating system and supporting a graphicaluser interface which enables a user to set notification optionsspecifying how the light and the alarm are to operate to notify theuser.
 37. A method for operating a handheld computing device comprisingthe steps of: scheduling an event; and upon occurrence of the event,emitting a light that is visible externally of the computing device. 38.A method as recited in claim 37 , further comprising the step ofblinking the light.
 39. A method as recited in claim 37 , wherein theevent pertains to an application running on the handheld computingdevice, the method further comprising the step of displaying anannunciator associated with the application.